Para este ejercicio crearemos una una base de datos en AWS, a través de su servicio RDS (relational database service), configuraremos el acceso desde EC2 e instalaremos y configuraremos Wordpress en ella.


Índice

  1. [[#RDS]]
  2. [[#EC2 + RDS]]
    1. [[#Creación EC2 para wordpress]]
    2. [[#Acceder RDS desde EC2]]
  3. [[#Wordpress]]
  4. [[#Comprobación]]
  5. [[#Conclusión]]

RDS

RDS, o Relational Database Service, es el servicio de AWS para bases de datos relacionales.
Para crear una instancia, vamos a la consola de RDS en AWS y seleccionamos Crear base de datos

Elegimos el modo Creación estándar y seleccionamos el motor de base de datos y su versión. En mi caso lo haré con MySQL en su última versión.

Debemos ahora configurar el nombre de la base de datos, el usuario maestro (root) y una contraseña:

Ahora, en la sección de configuración de red, seleccionamos la VPC que creamos en este ejercicio y negamos el acceso público.

De aquí pudimos conectarnos directo al EC2, pero lo haremos separado por fines educativos.

Configuramos el grupo de seguridad para que permita el puerto 3306 (o el puerto que utilice el motor de base de datos) desde EC2

Otras configuraciones a notar:
Templates podemos rápidamente seleccionar el free tier para pruebas pero si elegimos el de producción podemos cambiar:

EC2 + RDS

Creación EC2 para wordpress

Ahora vamos a configurar una nueva instancia para utilizar wordpress.
Configuramos el nombre de la instancia, el AMI (amazon linux), el tipo de instancia, la asignamos a la VPC con la subred pública, el grupo de seguridad que permita acceso SSH, HTTP y lanzamos la instancia.

Acceder RDS desde EC2

Nos conectamos a la instancia a través de SSH.
Instalamos MySQL en la instancia:

  1. Actualizamos
  2. Descargamos el archivo rpm
  3. Lo instalamos
  4. Importamos su llave pública
  5. Instalamos el servidor

Debemos ahora ligar el RDS a nuestro EC2, asegurarnos que estén en la misma zona de disponibilidad para no incurrir en gastos fantasmas innecesarios.

Probamos la conexión RDS:

Además nos pedirá la contraseña. La dirección endpoint_rds la encontramos en la consola RDS

Dentro del cliente MySQL crearemos un usuario y una base de datos para WordPress:

CREATE USER 'admin_wordpress'@'%' IDENTIFIED BY 'contraseña'; GRANT ALL PRIVILEGES ON nombre_DDBB.* TO 'admin_wordpress'@'%'; FLUSH PRIVILEGES;

Con este comando creamos el usuario y puede acceder desde cualquier ip ('%'), le asignamos la contraseña; le damos todos los privilegios de la base de datos (y sus tablas con el wildcard) al usuario y permitimos cualquier dirección IP; Hacemos un "flush" que a grandes rasgos es realizar todos estos cambios de privilegios ahora mismo.

Ojo que este comando sólo es necesario si necesitamos crear un usuario adicional con los permisos. En mi caso lo cree al momento de hacer la RDS.

Wordpress

Ahora, debemos instalar las dependencias de WordPress en la instancia:

Con estos comandos instalamos los servicios necesarios para el servidor web y las configuraciones pertinentes para integrar mysql con el mismo.

Ahora debemos descargar y configurar Wordpress:

Lo siguiente es configurar la base de datos en wordpress:
Para ello debemos primero editar el archivo wp-config.php

define('DB_NAME', 'nombre_DDBB');
define('DB_USER', 'admin_wordpress');
define('DB_PASSWORD', 'contraseña');
define('DB_HOST', '<endpoint_RDS>');

Comprobación

Para la comprobación accedemos a la instancia EC2 desde el navegador utilizando su dirección.

Nos encontramos con este error. Investigándolo, nos encontramos con que no tenemos acceso a http, así que nos dirigimos al grupo de seguridad y agregamos una regla para aceptar conexiones HTTP.

Arreglado eso logré conectarme, sin embargo los contenidos de wp-config.php están expuestos lo que es una brecha de seguridad enorme. Esto es debido a un error.
Investigando a profundidad noté que wordpress no estaba correctamente instalado en el servidor, y no estaba parseando correctamente el php debido a que faltaban unos módulos de php, que no se instalaron directamente con la instalación inicial.

Con esto último solucionado, veremos la nueva página de wordpress:

Completamos la configuración inicial de wordpress

Creamos una publicación y revisamos que los datos se almacenan en la base de datos RDS:

Conclusión

Ha sido un desafío largo y complejo. Tuve que aprender varias cosas nuevas (php, wordpress, rds) pero ha sido satisfactorio.
La mayor dificultad fue sin duda el poder conectarme a wordpress por la falla en el parseo de php.

Lo que puedo rescatar de esta experiencia: